1. Field of the Invention
The present invention relates to host bus adapters, and more particularly, to simulation techniques.
2. Background of the Invention
Application Specific Integrated Circuits (“ASICs”) are commonly used in various computing functions. Typically, while an ASIC is being designed and before a foundry fabricates it, the ASIC is verified and tested in a simulation environment. After fabrication, the ASIC is tested to perform in real life situations using lab equipment.
In a conventional simulation environment, an ASIC is tested to verify the ASIC's capability. Special code is developed for testing and de-bugging the ASIC, and after the testing is complete, the code is discarded. Reworking ASICs is expensive and labor intensive and hence, it is desirable to have an efficient way to test/simulate ASICs.
Simulations are not reliable because the simulation environment and the actual ASIC software/firmware environment may be different. This problem is highlighted in simulating host bus adapters, used in storage area networks (“SANs”).
SANs are commonly used where plural memory storage devices are made available to various host computing systems. Data in a SAN is typically moved between plural host systems (that include computer systems, servers etc.) and storage systems (or storage devices, used interchangeably throughout this specification) through various controllers/adapters.
Host systems typically include several functional components. These components may include a central processing unit (CPU), main memory, input/output (“I/O”) devices, and streaming storage devices (for example, tape drives). In conventional systems, the main memory is coupled to the CPU via a system bus or a local memory bus. The main memory is used to provide the CPU access to data and/or program information that is stored in main memory at execution time. Typically, the main memory is composed of random access memory (RAM) circuits. A computer system with the CPU and main memory is often referred to as a host system.
Host systems often communicate with storage systems via a host bus adapter (“HBA”, may also be referred to as a “controller” and/or “adapter”) using an interface, for example, the “PCI” bus interface. PCI stands for Peripheral Component Interconnect, a local bus standard that was developed by Intel Corporation®. The PCI standard is incorporated herein by reference in its entirety.
PCI-Express is another Input/Output (“I/O”) bus standard (incorporated herein by reference in its entirety) used in this environment. PCI-Express uses discrete logical layers to process inbound and outbound information.
To manage the cost of developing ASICs in general and HBAs in particular, effective simulation and testing techniques are needed.
Therefore, there is a need for an efficient host emulation technique that is substantially similar to the real-life target environment.